#ifndef LOADCONFIG_H
#define LOADCONFIG_H

#include <QObject>
#include <QFile>
#include <QTextStream>
#include <QStringList>
#include <QDebug>
#include <QFileDialog>

#define HEADR_          1
#define CNF_NAME_COL    0  // 创建TabWidget页面个数参数所在列
#define CNF_BAUD_COL    1  // 创建TabWidget页面个数参数所在列
#define CNF_ADDR_COL    2  // 创建TabWidget页面个数参数所在列
#define TAB_NUM_COL     3   // 创建TabWidget页面个数参数所在列
enum
{
    TYPE = 0,
    NAME,
    OFS,
    UNIT,
    INDEX,
    STEPS,
    WARN,
    ALARM,
    DISPLAY,
    ICON,
    CONTROL,
    RANGE,
    REMARK
};

class LoadConfig : public QObject
{
    Q_OBJECT
public:
    explicit LoadConfig(QObject *parent = nullptr);
    QMap<int, QString> parseKeyValue(const QString &dataStr);
    void LoadCsv(QString fileName);
    QString ProfileName;
    int baud = 9600;            //defult
    int id = 1;
    QMap<int,QString>    TabSetUpParamsMap;
    QMap<int,QStringList>   GpMap;
    QVector<QStringList> ParamList;

private:         //func
    QStringList parseComplexLine(const QString &line);
    QVector<QStringList> parseCsv(const QString &filePath);
    QMap<QString, int> countDataSegments(const QVector<QStringList>& csvData);

#include <QMap>
#include <QStringList>

QMap<int, QStringList> parseGroupToMap(const QString& input);

signals:
    void SendMB_Cnf(QMap<QString, int>);
};

#endif // LOADCONFIG_H
